Within object-oriented programs, objects utilized by an application are often stored in a so-called “object store” (or object repository). For example, an object-oriented database is a flexible database that supports the use of abstract data types, objects, and classes and that can store a wide range of data, often including sound, video, and graphics, in addition to text and numbers. The primary structure of such an object-oriented database is sometimes referred to as an object store. Some object-oriented databases allow data retrieval procedures and rules for processing data to be stored along with the data or in place of the data. This allows the data to be stored in areas other than in the physical database, which is often desirable when the data files are large, such as those for video files.
In order to enhance the performance of an object-oriented program, a number of in-memory caches may be implemented in which frequently accessed objects may be stored so as to facilitate high-speed access to such objects. It will be appreciated that updates to objects maintained within an object store need to be propagated to caches where cached copies of such objects are instantiated so as to maintain consistency between the object store and in-memory caches.
A known LDAP object store only allows updating of one object at a time. Other existing solutions do not perform well to maintain cache consistency in a scalable manner. The performance of iterating over objects of the same type is slow because lists of objects must be cloned to avoid concurrent modification exceptions.